def triangle_number_generator():
    for n in range(1, 1000000):
        yield n * (n + 1) // 2


def count_divisors(n):
    return sum([2 for i in range(1, int(n ** 0.5) + 1) if n % i == 0 and i * i != n])


print(next(i for i in triangle_number_generator() if count_divisors(i) > 500))
